Some operating systems in the Windows family provide facilities through which a user can interact remotely with the user interface belonging to applications that are running on another computer. Such facilities are known as remote desktop or terminal services. An example of such a facility is WINDOWS TERMINAL SERVER™ or a remote desktop protocol (RDP) device. These facilities have shortcoming as a result of the fact that the code responsible for the RDP protocol encoding is implemented by a set of kernel mode drivers. These kernel mode drivers have typically been used because such a driver can easily access the data that is to be encoded into a protocol. However, such drivers are hard to service and are very difficult to develop, maintain or extend in functionality. To that end, these limitations can be mitigated if the facilities are implemented in a user mode process.